package cn.tedu.file;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;


/**本类用于测试文件类File*/
public class TestFile {
    public static void main(String[] args) throws IOException {
        //1.创建File类对象
        /**1.File需要导包，import java.io.File;
         * 2.路径是String类型，必须写正确，不然找不到文件
         * 3.完整的文件名包含两部分：文件名+后缀名
         * 4.ready文件与1.txt需要自己手动创建*/
        File file = new File("F:\\ready\\1.txt");
        //2.测试常用方法
        System.out.println(file.length());//获取当前文件的字节量
        System.out.println(file.exists());//判断文件是否存在
        System.out.println(file.isFile());//判断当前file对象是文件吗
        System.out.println(file.isDirectory());//判断当前file对象是文件夹吗
        System.out.println(file.getName());//获取文件完整的名字
        System.out.println(file.getParent());//获取文件的父级路径
        System.out.println(file.getAbsolutePath());//获取带盘符的文件的绝对路径
        System.out.println(file.getAbsoluteFile());

        //3.测试创建与删除
        /**new只会帮你在内存中创建一个File类型的对象
         * 并不会帮你在磁盘中创建一个真实存在的2.txt*/
        File file2 = new File("F:\\ready\\2.txt");//创建不存在的文件
        //创建一个之前不存在的文件2.txt，如果创建成功，会返回true
        /**如果指定创建文件的路径不对，会抛出异常
         * 所以我们需要提前处理这个问题，暂时选择在main()上抛出
         * 这个IO异常是我们目前遇到的强制要求必须预先处理的异常
         * 如果不处理，方法的调用会报错，通不过编译*/
        System.out.println(file2.createNewFile());

        File file3 = new File("F:\\ready\\m");
        System.out.println(file3.mkdir());//创建不存在的单层文件夹;

        File file4 = new File("F:\\ready\\a\\b\\b");
        System.out.println(file4.mkdirs());//创建不存在的多层文件夹

        int k=10;
        int i=k++;
        if((k>i++))
            System.out.println(i);

        /**delete()只能删除文件和空文件夹*/
        file.delete();//删除文件夹
        file4.delete();//删除空文件夹b
        file3.delete();//直接删除了空文件夹m

        //4.测试展现文件列表
        File file5 = new File("F:\\ready");
        String[] list = file5.list();/**不常用*/
        System.out.println(Arrays.toString(list));
        //这句话会报错，因为这是一个String[],所以数组中的每个元素都是String类型
        //那么我们只能使用String类中的方法，geiName()是File类的方法，在这里不能用
//        System.out.println(list[0].getName());

        File[] fs = file5.listFiles();/**常用，打印的是绝对路径*/
        System.out.println(Arrays.toString(fs));



    }
}
